home *** CD-ROM | disk | FTP | other *** search
/ Aminet 28 / Aminet 28 (1998)(GTI - Schatztruhe)[!][Dec 1998].iso / Aminet / game / shoot / athrust.lha / AmigaThrust / src / ksyms.c < prev    next >
Encoding:
C/C++ Source or Header  |  1998-09-05  |  19.9 KB  |  1,126 lines

  1. #include "ksyms.h"
  2. #include <stdio.h>
  3.  
  4. static char *latin1_syms[] = {
  5.     "nul",
  6.     "Control_a",
  7.     "Control_b",
  8.     "Control_c",
  9.     "Control_d",
  10.     "Control_e",
  11.     "Control_f",
  12.     "Control_g",
  13.     "BackSpace",
  14.     "Tab",
  15.     "Linefeed",
  16.     "Control_k",
  17.     "Control_l",
  18.     "Control_m",
  19.     "Control_n",
  20.     "Control_o",
  21.     "Control_p",
  22.     "Control_q",
  23.     "Control_r",
  24.     "Control_s",
  25.     "Control_t",
  26.     "Control_u",
  27.     "Control_v",
  28.     "Control_w",
  29.     "Control_x",
  30.     "Control_y",
  31.     "Control_z",
  32.     "Escape",
  33.     "Control_backslash",
  34.     "Control_bracketright",
  35.     "Control_asciicircum",
  36.     "Control_underscore",
  37.     "space",
  38.     "exclam",
  39.     "quotedbl",
  40.     "numbersign",
  41.     "dollar",
  42.     "percent",
  43.     "ampersand",
  44.     "apostrophe",
  45.     "parenleft",
  46.     "parenright",
  47.     "asterisk",
  48.     "plus",
  49.     "comma",
  50.     "minus",
  51.     "period",
  52.     "slash",
  53.     "zero",
  54.     "one",
  55.     "two",
  56.     "three",
  57.     "four",
  58.     "five",
  59.     "six",
  60.     "seven",
  61.     "eight",
  62.     "nine",
  63.     "colon",
  64.     "semicolon",
  65.     "less",
  66.     "equal",
  67.     "greater",
  68.     "question",
  69.     "at",
  70.     "A",
  71.     "B",
  72.     "C",
  73.     "D",
  74.     "E",
  75.     "F",
  76.     "G",
  77.     "H",
  78.     "I",
  79.     "J",
  80.     "K",
  81.     "L",
  82.     "M",
  83.     "N",
  84.     "O",
  85.     "P",
  86.     "Q",
  87.     "R",
  88.     "S",
  89.     "T",
  90.     "U",
  91.     "V",
  92.     "W",
  93.     "X",
  94.     "Y",
  95.     "Z",
  96.     "bracketleft",
  97.     "backslash",
  98.     "bracketright",
  99.     "asciicircum",
  100.     "underscore",
  101.     "grave",
  102.     "a",
  103.     "b",
  104.     "c",
  105.     "d",
  106.     "e",
  107.     "f",
  108.     "g",
  109.     "h",
  110.     "i",
  111.     "j",
  112.     "k",
  113.     "l",
  114.     "m",
  115.     "n",
  116.     "o",
  117.     "p",
  118.     "q",
  119.     "r",
  120.     "s",
  121.     "t",
  122.     "u",
  123.     "v",
  124.     "w",
  125.     "x",
  126.     "y",
  127.     "z",
  128.     "braceleft",
  129.     "bar",
  130.     "braceright",
  131.     "asciitilde",
  132.     "Delete",
  133.     "",
  134.     "",
  135.     "",
  136.     "",
  137.     "",
  138.     "",
  139.     "",
  140.     "",
  141.     "",
  142.     "",
  143.     "",
  144.     "",
  145.     "",
  146.     "",
  147.     "",
  148.     "",
  149.     "",
  150.     "",
  151.     "",
  152.     "",
  153.     "",
  154.     "",
  155.     "",
  156.     "",
  157.     "",
  158.     "",
  159.     "",
  160.     "",
  161.     "",
  162.     "",
  163.     "",
  164.     "",
  165.     "nobreakspace",
  166.     "exclamdown",
  167.     "cent",
  168.     "sterling",
  169.     "currency",
  170.     "yen",
  171.     "brokenbar",
  172.     "section",
  173.     "diaeresis",
  174.     "copyright",
  175.     "ordfeminine",
  176.     "guillemotleft",
  177.     "notsign",
  178.     "hyphen",
  179.     "registered",
  180.     "macron",
  181.     "degree",
  182.     "plusminus",
  183.     "twosuperior",
  184.     "threesuperior",
  185.     "acute",
  186.     "mu",
  187.     "paragraph",
  188.     "periodcentered",
  189.     "cedilla",
  190.     "onesuperior",
  191.     "masculine",
  192.     "guillemotright",
  193.     "onequarter",
  194.     "onehalf",
  195.     "threequarters",
  196.     "questiondown",
  197.     "Agrave",
  198.     "Aacute",
  199.     "Acircumflex",
  200.     "Atilde",
  201.     "Adiaeresis",
  202.     "Aring",
  203.     "AE",
  204.     "Ccedilla",
  205.     "Egrave",
  206.     "Eacute",
  207.     "Ecircumflex",
  208.     "Ediaeresis",
  209.     "Igrave",
  210.     "Iacute",
  211.     "Icircumflex",
  212.     "Idiaeresis",
  213.     "ETH",
  214.     "Ntilde",
  215.     "Ograve",
  216.     "Oacute",
  217.     "Ocircumflex",
  218.     "Otilde",
  219.     "Odiaeresis",
  220.     "multiply",
  221.     "Ooblique",
  222.     "Ugrave",
  223.     "Uacute",
  224.     "Ucircumflex",
  225.     "Udiaeresis",
  226.     "Yacute",
  227.     "THORN",
  228.     "ssharp",
  229.     "agrave",
  230.     "aacute",
  231.     "acircumflex",
  232.     "atilde",
  233.     "adiaeresis",
  234.     "aring",
  235.     "ae",
  236.     "ccedilla",
  237.     "egrave",
  238.     "eacute",
  239.     "ecircumflex",
  240.     "ediaeresis",
  241.     "igrave",
  242.     "iacute",
  243.     "icircumflex",
  244.     "idiaeresis",
  245.     "eth",
  246.     "ntilde",
  247.     "ograve",
  248.     "oacute",
  249.     "ocircumflex",
  250.     "otilde",
  251.     "odiaeresis",
  252.     "division",
  253.     "oslash",
  254.     "ugrave",
  255.     "uacute",
  256.     "ucircumflex",
  257.     "udiaeresis",
  258.     "yacute",
  259.     "thorn",
  260.     "ydiaeresis"
  261. };
  262.  
  263. char *latin2_syms[] = {
  264.     "", "Aogonek", "breve", "Lstroke", "", "Lcaron", "Sacute", "",
  265.     "", "Scaron", "Scedilla", "Tcaron", "Zacute", "", "Zcaron", "Zabovedot",
  266.     "", "aogonek", "ogonek", "lstroke", "", "lcaron", "sacute", "caron",
  267.     "", "scaron", "scedilla", "tcaron", "zacute", "doubleacute", "zcaron", "zabovedot",
  268.     "Racute", "", "", "Abreve", "", "Lacute", "Cacute", "",
  269.     "Ccaron", "", "Eogonek", "", "Ecaron", "", "", "Dcaron",
  270.     "Dstroke", "Nacute", "Ncaron", "", "", "Odoubleacute", "", "",
  271.     "Rcaron", "Uring", "", "Udoubleacute", "", "", "Tcedilla", "",
  272.     "racute", "", "", "abreve", "", "lacute", "cacute", "",
  273.     "ccaron", "", "eogonek", "", "ecaron", "", "", "dcaron",
  274.     "dstroke", "nacute", "ncaron", "", "", "odoubleacute", "", "",
  275.     "rcaron", "uring", "", "udoubleacute", "", "", "tcedilla", "abovedot"
  276. };
  277.  
  278. char *mazovia_syms[] = { /* as specified by Wlodek Bzyl <matwb@univ.gda.pl> */
  279.     "", "", "", "", "", "", "aogonek", "", /* 8x */
  280.     "", "", "", "", "", "cacute", "", "Aogonek",
  281.     "Eogonek", "eogonek", "lstroke", "", "", "Cacute", "", "", /* 9x */
  282.     "Sacute", "", "", "", "Lstroke", "", "sacute", "",
  283.     "Zacute", "Zabovedot", "oacute", "Oacute",
  284.     "nacute", "Nacute", "zacute", "zabovedot", /* ax */
  285.     "", "", "", "", "", "", "guillemotleft", "guillemotright",
  286.     "", "", "", "", "", "", "", "", /* bx */
  287.     "", "", "", "", "", "", "", "",
  288.     "", "", "", "", "", "", "", "", /* cx */
  289.     "", "", "", "", "", "", "", "",
  290.     "", "", "", "", "", "", "", "", /* dx */
  291.     "", "", "", "", "", "", "", "",
  292.     "", "", "", "", "", "", "", "", /* ex */
  293.     "", "", "", "", "", "", "", "",
  294.     "", "", "", "", "", "", "", "", /* fx */
  295.     "", "", "", "", "", "", "", "quotedblbase"
  296. };
  297.  
  298. char *latin3_syms[] = {
  299.     "", "Hstroke", "", "", "", "", "Hcircumflex", "",
  300.     "", "Iabovedot", "", "Gbreve", "Jcircumflex", "", "", "",
  301.     "", "hstroke", "", "", "", "", "hcircumflex", "",
  302.     "", "idotless", "", "gbreve", "jcircumflex", "", "", "",
  303.     "", "", "", "", "", "Cabovedot", "Ccircumflex", "",
  304.     "", "", "", "", "", "", "", "",
  305.     "", "", "", "", "", "Gabovedot", "", "",
  306.     "Gcircumflex", "", "", "", "", "Ubreve", "Scircumflex", "",
  307.     "", "", "", "", "", "cabovedot", "ccircumflex", "",
  308.     "", "", "", "", "", "", "", "",
  309.     "", "", "", "", "", "gabovedot", "", "",
  310.     "gcircumflex", "", "", "", "", "ubreve", "scircumflex", ""
  311. };
  312.  
  313. char *latin4_syms[] = {
  314.     "", "", "kra", "Rcedilla", "", "Itilde", "Lcedilla", "",
  315.     "", "", "Emacron", "Gcedilla", "Tslash", "", "", "",
  316.     "", "", "", "rcedilla", "", "itilde", "lcedilla", "",
  317.     "", "", "emacron", "gcedilla", "tslash", "ENG", "", "eng",
  318.     "Amacron", "", "", "", "", "", "", "Iogonek",
  319.     "", "", "", "", "Eabovedot", "", "", "Imacron",
  320.     "", "Ncedilla", "Omacron", "Kcedilla", "", "", "", "",
  321.     "", "Uogonek", "", "", "", "Utilde", "Umacron", "",
  322.     "amacron", "", "", "", "", "", "", "iogonek",
  323.     "", "", "", "", "eabovedot", "", "", "imacron",
  324.     "", "ncedilla", "omacron", "kcedilla", "", "", "", "",
  325.     "", "uogonek", "", "", "", "utilde", "umacron", ""
  326. };
  327.  
  328. char *iso_8859_5_syms[] = { /* 160-255 */
  329.     "no-break_space",                    /* 0240 */
  330.     "cyrillic_capital_letter_io",
  331.     "serbocroatian_cyrillic_capital_letter_dje",
  332.     "macedonian_cyrillic_capital_letter_gje",
  333.     "ukrainian_cyrillic_capital_letter_ie",
  334.     "macedonian_cyrillic_capital_letter_dze",
  335.     "cyrillic_capital_letter_i",
  336.     "ukrainian_cyrillic_capital_letter_yi",
  337.     "cyrillic_capital_letter_je",             /* 0250 */
  338.     "cyrillic_capital_letter_lje",
  339.     "cyrillic_capital_letter_nje",
  340.     "serbocroatian_cyrillic_capital_letter_chje",
  341.     "macedonian_cyrillic_capital_letter_kje",
  342.     "soft_hyphen",
  343.     "bielorussian_cyrillic_capital_letter_short_u",
  344.     "cyrillic_capital_letter_dze",
  345.     "cyrillic_capital_letter_a",             /* 0260 */
  346.     "cyrillic_capital_letter_be",
  347.     "cyrillic_capital_letter_ve",
  348.     "cyrillic_capital_letter_ghe",
  349.     "cyrillic_capital_letter_de",
  350.     "cyrillic_capital_letter_ie",
  351.     "cyrillic_capital_letter_zhe",
  352.     "cyrillic_capital_letter_ze",
  353.     "cyrillic_capital_letter_i",             /* 0270 */
  354.     "cyrillic_capital_letter_short_i",
  355.     "cyrillic_capital_letter_ka",
  356.     "cyrillic_capital_letter_el",
  357.     "cyrillic_capital_letter_em",
  358.     "cyrillic_capital_letter_en",
  359.     "cyrillic_capital_letter_o",
  360.     "cyrillic_capital_letter_pe",
  361.     "cyrillic_capital_letter_er",             /* 0300 */
  362.     "cyrillic_capital_letter_es",
  363.     "cyrillic_capital_letter_te",
  364.     "cyrillic_capital_letter_u",
  365.     "cyrillic_capital_letter_ef",
  366.     "cyrillic_capital_letter_ha",
  367.     "cyrillic_capital_letter_tse",
  368.     "cyrillic_capital_letter_che",
  369.     "cyrillic_capital_letter_sha",             /* 0310 */
  370.     "cyrillic_capital_letter_shcha",
  371.     "cyrillic_capital_hard_sign",
  372.     "cyrillic_capital_letter_yeru",
  373.     "cyrillic_capital_soft_sign",
  374.     "cyrillic_capital_letter_e",
  375.     "cyrillic_capital_letter_yu",
  376.     "cyrillic_capital_letter_ya",
  377.     "cyrillic_small_letter_a",                /* 0320 */
  378.     "cyrillic_small_letter_be",
  379.     "cyrillic_small_letter_ve",
  380.     "cyrillic_small_letter_ghe",
  381.     "cyrillic_small_letter_de",
  382.     "cyrillic_small_letter_ie",
  383.     "cyrillic_small_letter_zhe",
  384.     "cyrillic_small_letter_ze",
  385.     "cyrillic_small_letter_i",                /* 0330 */
  386.     "cyrillic_small_letter_short_i",
  387.     "cyrillic_small_letter_ka",
  388.     "cyrillic_small_letter_el",
  389.     "cyrillic_small_letter_em",
  390.     "cyrillic_small_letter_en",
  391.     "cyrillic_small_letter_o",
  392.     "cyrillic_small_letter_pe",
  393.     "cyrillic_small_letter_er",                /* 0340 */
  394.     "cyrillic_small_letter_es",
  395.     "cyrillic_small_letter_te",
  396.     "cyrillic_small_letter_u",
  397.     "cyrillic_small_letter_ef",
  398.     "cyrillic_small_letter_ha",
  399.     "cyrillic_small_letter_tse",
  400.     "cyrillic_small_letter_che",
  401.     "cyrillic_small_letter_sha",             /* 0350 */
  402.     "cyrillic_small_letter_shcha",
  403.     "cyrillic_small_hard_sign",
  404.     "cyrillic_small_letter_yeru",
  405.     "cyrillic_small_soft_sign",
  406.     "cyrillic_small_letter_e",
  407.     "cyrillic_small_letter_yu",
  408.     "cyrillic_small_letter_ya",
  409.     "number_acronym",                    /* 0360 */
  410.     "cyrillic_small_letter_io",
  411.     "serbocroatian_cyrillic_small_letter_dje",
  412.     "macedonian_cyrillic_small_letter_gje",
  413.     "ukrainian_cyrillic_small_letter_ie",
  414.     "macedonian_cyrillic_small_letter_dze",
  415.     "cyrillic_small_letter_i",
  416.     "ukrainian_cyrillic_small_letter_yi",
  417.     "cyrillic_small_letter_je",                /* 0370 */
  418.     "cyrillic_small_letter_lje",
  419.     "cyrillic_small_letter_nje",
  420.     "serbocroatian_cyrillic_small_letter_chje",
  421.     "macedonian_cyrillic_small_letter_kje",
  422.     "paragraph_sign",
  423.     "bielorussian_cyrillic_small_letter_short_u",     /* printing error in ECMA-113 */
  424.     "cyrillic_small_letter_dze"
  425. };
  426.  
  427. char *iso_8859_7_syms[] = { /* 160-255 */
  428.     "", "leftquote", "rightquote", "", "", "", "", "",
  429.     "", "", "", "", "", "", "", "",
  430.     "", "", "", "", "accent", "diaeresisaccent", "Alphaaccent", "",
  431.     "Epsilonaccent", "Etaaccent", "Iotaaccent", "rightanglequote", "Omicronaccent", "onehalf", "Upsilonaccent", "Omegaaccent",
  432.     "iotadiaeresisaccent", "Alpha", "Beta", "Gamma", "Delta", "Epsilon", "Zeta", "Eta",
  433.     "Theta", "Iota", "Kappa", "Lamda" /*sic*/, "Mu", "Nu", "Ksi", "Omicron",
  434.     "Pi", "Rho", "", "Sigma", "Tau", "Upsilon", "Phi", "Khi",
  435.     "Psi", "Omega", "Iotadiaeresis", "Upsilondiaeresis", "alphaaccent", "epsilonaccent", "etaaccent", "iotaaccent",
  436.     "upsilondiaeresisaccent", "alpha", "beta", "gamma", "delta", "epsilon", "zeta", "eta",
  437.     "theta", "iota", "kappa", "lamda" /*sic*/, "mu", "nu", "ksi", "omicron",
  438.     "pi", "rho", "terminalsigma", "sigma", "tau", "upsilon", "phi", "khi",
  439.     "psi", "omega", "iotadiaeresis", "upsilondiaeresis", "omicronaccent", "upsilonaccent", "omegaaccent", ""
  440. };
  441.  
  442. char *iso_8859_8_syms[] = {
  443.     "", "", "", "", "", "", "", "",
  444.     "", "", "multiplication", "", "", "", "", "overscore",
  445.     "", "", "", "", "", "", "", "",
  446.     "", "", "division", "", "", "", "", "",
  447.     "", "", "", "", "", "", "", "",
  448.     "", "", "", "", "", "", "", "",
  449.     "", "", "", "", "", "", "", "",
  450.     "", "", "", "", "", "", "", "doubleunderscore",
  451.     "alef", "bet", "gimel", "dalet", "he", "vav", "zayin", "het",
  452.     "tet", "yod", "finalkaf", "kaf", "lamed", "finalmem", "mem", "finalnun",
  453.     "nun", "samekh", "ayin", "finalpe", "pe", "finaltsadi", "tsadi", "qof",
  454.     "resh", "shin", "tav", "", "", "", "", ""
  455. };
  456.  
  457. static char *fn_syms[] = {
  458.     "F1",
  459.     "F2",
  460.     "F3",
  461.     "F4",
  462.     "F5",
  463.     "F6",
  464.     "F7",
  465.     "F8",
  466.     "F9",
  467.     "F10",
  468.     "F11",
  469.     "F12",
  470.     "F13",
  471.     "F14",
  472.     "F15",
  473.     "F16",
  474.     "F17",
  475.     "F18",
  476.     "F19",
  477.     "F20",
  478.     "Find",            /* also called: "Home" */
  479.     "Insert",
  480.     "Remove",
  481.     "Select",        /* also called: "End" */
  482.     "Prior",        /* also called: "PageUp" */
  483.     "Next",            /* also called: "PageDown" */
  484.     "Macro",
  485.     "Help",
  486.     "Do",
  487.     "Pause",
  488.     "F21",
  489.     "F22",
  490.     "F23",
  491.     "F24",
  492.     "F25",
  493.     "F26",
  494.     "F27",
  495.     "F28",
  496.     "F29",
  497.     "F30",
  498.     "F31",
  499.     "F32",
  500.     "F33",
  501.     "F34",
  502.     "F35",
  503.     "F36",
  504.     "F37",
  505.     "F38",
  506.     "F39",
  507.     "F40",
  508.     "F41",
  509.     "F42",
  510.     "F43",
  511.     "F44",
  512.     "F45",
  513.     "F46",
  514.     "F47",
  515.     "F48",
  516.     "F49",
  517.     "F50",
  518.     "F51",
  519.     "F52",
  520.     "F53",
  521.     "F54",
  522.     "F55",
  523.     "F56",
  524.     "F57",
  525.     "F58",
  526.     "F59",
  527.     "F60",
  528.     "F61",
  529.     "F62",
  530.     "F63",
  531.     "F64",
  532.     "F65",
  533.     "F66",
  534.     "F67",
  535.     "F68",
  536.     "F69",
  537.     "F70",
  538.     "F71",
  539.     "F72",
  540.     "F73",
  541.     "F74",
  542.     "F75",
  543.     "F76",
  544.     "F77",
  545.     "F78",
  546.     "F79",
  547.     "F80",
  548.     "F81",
  549.     "F82",
  550.     "F83",
  551.     "F84",
  552.     "F85",
  553.     "F86",
  554.     "F87",
  555.     "F88",
  556.     "F89",
  557.     "F90",
  558.     "F91",
  559.     "F92",
  560.     "F93",
  561.     "F94",
  562.     "F95",
  563.     "F96",
  564.     "F97",
  565.     "F98",
  566.     "F99",
  567.     "F100",
  568.     "F101",
  569.     "F102",
  570.     "F103",
  571.     "F104",
  572.     "F105",
  573.     "F106",
  574.     "F107",
  575.     "F108",
  576.     "F109",
  577.     "F110",
  578.     "F111",
  579.     "F112",
  580.     "F113",
  581.     "F114",
  582.     "F115",
  583.     "F116",
  584.     "F117",
  585.     "F118",
  586.     "F119",
  587.     "F120",
  588.     "F121",
  589.     "F122",
  590.     "F123",
  591.     "F124",
  592.     "F125",
  593.     "F126",
  594.     "F127",
  595.     "F128",
  596.     "F129",
  597.     "F130",
  598.     "F131",
  599.     "F132",
  600.     "F133",
  601.     "F134",
  602.     "F135",
  603.     "F136",
  604.     "F137",
  605.     "F138",
  606.     "F139",
  607.     "F140",
  608.     "F141",
  609.     "F142",
  610.     "F143",
  611.     "F144",
  612.     "F145",
  613.     "F146",
  614.     "F147",
  615.     "F148",
  616.     "F149",
  617.     "F150",
  618.     "F151",
  619.     "F152",
  620.     "F153",
  621.     "F154",
  622.     "F155",
  623.     "F156",
  624.     "F157",
  625.     "F158",
  626.     "F159",
  627.     "F160",
  628.     "F161",
  629.     "F162",
  630.     "F163",
  631.     "F164",
  632.     "F165",
  633.     "F166",
  634.     "F167",
  635.     "F168",
  636.     "F169",
  637.     "F170",
  638.     "F171",
  639.     "F172",
  640.     "F173",
  641.     "F174",
  642.     "F175",
  643.     "F176",
  644.     "F177",
  645.     "F178",
  646.     "F179",
  647.     "F180",
  648.     "F181",
  649.     "F182",
  650.     "F183",
  651.     "F184",
  652.     "F185",
  653.     "F186",
  654.     "F187",
  655.     "F188",
  656.     "F189",
  657.     "F190",
  658.     "F191",
  659.     "F192",
  660.     "F193",
  661.     "F194",
  662.     "F195",
  663.     "F196",
  664.     "F197",
  665.     "F198",
  666.     "F199",
  667.     "F200",
  668.     "F201",
  669.     "F202",
  670.     "F203",
  671.     "F204",
  672.     "F205",
  673.     "F206",
  674.     "F207",
  675.     "F208",
  676.     "F209",
  677.     "F210",
  678.     "F211",
  679.     "F212",
  680.     "F213",
  681.     "F214",
  682.     "F215",
  683.     "F216",
  684.     "F217",
  685.     "F218",
  686.     "F219",
  687.     "F220",
  688.     "F221",
  689.     "F222",
  690.     "F223",
  691.     "F224",
  692.     "F225",
  693.     "F226",
  694.     "F227",
  695.     "F228",
  696.     "F229",
  697.     "F230",
  698.     "F231",
  699.     "F232",
  700.     "F233",
  701.     "F234",
  702.     "F235",
  703.     "F236",
  704.     "F237",
  705.     "F238",
  706.     "F239",
  707.     "F240",
  708.     "F241",
  709.     "F242",
  710.     "F243",
  711.     "F244",
  712.     "F245",
  713.     "F246"        /* there are 10 keys named Insert etc., total 256 */
  714. };
  715.  
  716. static char *spec_syms[] = {
  717.     "VoidSymbol",
  718.     "Return",
  719.     "Show_Registers",
  720.     "Show_Memory",
  721.     "Show_State",
  722.     "Break",
  723.     "Last_Console",
  724.     "Caps_Lock",
  725.     "Num_Lock",
  726.     "Scroll_Lock",
  727.     "Scroll_Forward",
  728.     "Scroll_Backward",
  729.     "Boot",
  730.     "Caps_On",
  731.     "Compose",
  732.     "SAK",
  733.     "Decr_Console",
  734.     "Incr_Console",
  735.     "Spawn_Console",
  736.     "Bare_Num_Lock"
  737. };
  738.  
  739. static char *pad_syms[] = {
  740.     "KP_0",
  741.     "KP_1",
  742.     "KP_2",
  743.     "KP_3",
  744.     "KP_4",
  745.     "KP_5",
  746.     "KP_6",
  747.     "KP_7",
  748.     "KP_8",
  749.     "KP_9",
  750.     "KP_Add",
  751.     "KP_Subtract",
  752.     "KP_Multiply",
  753.     "KP_Divide",
  754.     "KP_Enter",
  755.     "KP_Comma",
  756.     "KP_Period",
  757.     "KP_MinPlus"
  758. };
  759.  
  760. static char *dead_syms[] = {
  761.     "dead_grave",
  762.     "dead_acute",
  763.     "dead_circumflex",
  764.     "dead_tilde",
  765.     "dead_diaeresis",
  766.     "dead_cedilla"
  767. };
  768.  
  769. static char *cons_syms[] = {
  770.     "Console_1",
  771.     "Console_2",
  772.     "Console_3",
  773.     "Console_4",
  774.     "Console_5",
  775.     "Console_6",
  776.     "Console_7",
  777.     "Console_8",
  778.     "Console_9",
  779.     "Console_10",
  780.     "Console_11",
  781.     "Console_12",
  782.     "Console_13",
  783.     "Console_14",
  784.     "Console_15",
  785.     "Console_16",
  786.     "Console_17",
  787.     "Console_18",
  788.     "Console_19",
  789.     "Console_20",
  790.     "Console_21",
  791.     "Console_22",
  792.     "Console_23",
  793.     "Console_24",
  794.     "Console_25",
  795.     "Console_26",
  796.     "Console_27",
  797.     "Console_28",
  798.     "Console_29",
  799.     "Console_30",
  800.     "Console_31",
  801.     "Console_32",
  802.     "Console_33",
  803.     "Console_34",
  804.     "Console_35",
  805.     "Console_36",
  806.     "Console_37",
  807.     "Console_38",
  808.     "Console_39",
  809.     "Console_40",
  810.     "Console_41",
  811.     "Console_42",
  812.     "Console_43",
  813.     "Console_44",
  814.     "Console_45",
  815.     "Console_46",
  816.     "Console_47",
  817.     "Console_48",
  818.     "Console_49",
  819.     "Console_50",
  820.     "Console_51",
  821.     "Console_52",
  822.     "Console_53",
  823.     "Console_54",
  824.     "Console_55",
  825.     "Console_56",
  826.     "Console_57",
  827.     "Console_58",
  828.     "Console_59",
  829.     "Console_60",
  830.     "Console_61",
  831.     "Console_62",
  832.     "Console_63"
  833. };
  834.  
  835. static char *cur_syms[] = {
  836.     "Down",
  837.     "Left",
  838.     "Right",
  839.     "Up"
  840. };
  841.  
  842. static char *shift_syms[] = {
  843.     "Shift",
  844.     "AltGr",
  845.     "Control",
  846.     "Alt",
  847.     "ShiftL",
  848.     "ShiftR",
  849.     "CtrlL",
  850.     "CtrlR",
  851.     "CapsShift"
  852. };
  853.  
  854. static char *meta_syms[] = {
  855.     "Meta_nul",
  856.     "Meta_Control_a",
  857.     "Meta_Control_b",
  858.     "Meta_Control_c",
  859.     "Meta_Control_d",
  860.     "Meta_Control_e",
  861.     "Meta_Control_f",
  862.     "Meta_Control_g",
  863.     "Meta_BackSpace",
  864.     "Meta_Tab",
  865.     "Meta_Linefeed",
  866.     "Meta_Control_k",
  867.     "Meta_Control_l",
  868.     "Meta_Control_m",
  869.     "Meta_Control_n",
  870.     "Meta_Control_o",
  871.     "Meta_Control_p",
  872.     "Meta_Control_q",
  873.     "Meta_Control_r",
  874.     "Meta_Control_s",
  875.     "Meta_Control_t",
  876.     "Meta_Control_u",
  877.     "Meta_Control_v",
  878.     "Meta_Control_w",
  879.     "Meta_Control_x",
  880.     "Meta_Control_y",
  881.     "Meta_Control_z",
  882.     "Meta_Escape",
  883.     "Meta_Control_backslash",
  884.     "Meta_Control_bracketright",
  885.     "Meta_Control_asciicircum",
  886.     "Meta_Control_underscore",
  887.     "Meta_space",
  888.     "Meta_exclam",
  889.     "Meta_quotedbl",
  890.     "Meta_numbersign",
  891.     "Meta_dollar",
  892.     "Meta_percent",
  893.     "Meta_ampersand",
  894.     "Meta_apostrophe",
  895.     "Meta_parenleft",
  896.     "Meta_parenright",
  897.     "Meta_asterisk",
  898.     "Meta_plus",
  899.     "Meta_comma",
  900.     "Meta_minus",
  901.     "Meta_period",
  902.     "Meta_slash",
  903.     "Meta_zero",
  904.     "Meta_one",
  905.     "Meta_two",
  906.     "Meta_three",
  907.     "Meta_four",
  908.     "Meta_five",
  909.     "Meta_six",
  910.     "Meta_seven",
  911.     "Meta_eight",
  912.     "Meta_nine",
  913.     "Meta_colon",
  914.     "Meta_semicolon",
  915.     "Meta_less",
  916.     "Meta_equal",
  917.     "Meta_greater",
  918.     "Meta_question",
  919.     "Meta_at",
  920.     "Meta_A",
  921.     "Meta_B",
  922.     "Meta_C",
  923.     "Meta_D",
  924.     "Meta_E",
  925.     "Meta_F",
  926.     "Meta_G",
  927.     "Meta_H",
  928.     "Meta_I",
  929.     "Meta_J",
  930.     "Meta_K",
  931.     "Meta_L",
  932.     "Meta_M",
  933.     "Meta_N",
  934.     "Meta_O",
  935.     "Meta_P",
  936.     "Meta_Q",
  937.     "Meta_R",
  938.     "Meta_S",
  939.     "Meta_T",
  940.     "Meta_U",
  941.     "Meta_V",
  942.     "Meta_W",
  943.     "Meta_X",
  944.     "Meta_Y",
  945.     "Meta_Z",
  946.     "Meta_bracketleft",
  947.     "Meta_backslash",
  948.     "Meta_bracketright",
  949.     "Meta_asciicircum",
  950.     "Meta_underscore",
  951.     "Meta_grave",
  952.     "Meta_a",
  953.     "Meta_b",
  954.     "Meta_c",
  955.     "Meta_d",
  956.     "Meta_e",
  957.     "Meta_f",
  958.     "Meta_g",
  959.     "Meta_h",
  960.     "Meta_i",
  961.     "Meta_j",
  962.     "Meta_k",
  963.     "Meta_l",
  964.     "Meta_m",
  965.     "Meta_n",
  966.     "Meta_o",
  967.     "Meta_p",
  968.     "Meta_q",
  969.     "Meta_r",
  970.     "Meta_s",
  971.     "Meta_t",
  972.     "Meta_u",
  973.     "Meta_v",
  974.     "Meta_w",
  975.     "Meta_x",
  976.     "Meta_y",
  977.     "Meta_z",
  978.     "Meta_braceleft",
  979.     "Meta_bar",
  980.     "Meta_braceright",
  981.     "Meta_asciitilde",
  982.     "Meta_Delete"
  983. };
  984.  
  985. static char *ascii_syms[] = {
  986.     "Ascii_0",
  987.     "Ascii_1",
  988.     "Ascii_2",
  989.     "Ascii_3",
  990.     "Ascii_4",
  991.     "Ascii_5",
  992.     "Ascii_6",
  993.     "Ascii_7",
  994.     "Ascii_8",
  995.     "Ascii_9",
  996.     "Hex_0",
  997.     "Hex_1",
  998.     "Hex_2",
  999.     "Hex_3",
  1000.     "Hex_4",
  1001.     "Hex_5",
  1002.     "Hex_6",
  1003.     "Hex_7",
  1004.     "Hex_8",
  1005.     "Hex_9",
  1006.     "Hex_A",
  1007.     "Hex_B",
  1008.     "Hex_C",
  1009.     "Hex_D",
  1010.     "Hex_E",
  1011.     "Hex_F"
  1012. };
  1013.  
  1014. static char *lock_syms[] = {
  1015.     "Shift_Lock",
  1016.     "AltGr_Lock",
  1017.     "Control_Lock",
  1018.     "Alt_Lock",
  1019.     "ShiftL_Lock",
  1020.     "ShiftR_Lock",
  1021.     "CtrlL_Lock",
  1022.     "CtrlR_Lock"
  1023. };
  1024.  
  1025. #define E(x) { x, sizeof(x) / sizeof(char **) }
  1026.  
  1027. syms_entry syms[] = {
  1028.     E(latin1_syms),
  1029.     E(fn_syms),
  1030.     E(spec_syms),
  1031.     E(pad_syms),
  1032.     E(dead_syms),
  1033.     E(cons_syms),
  1034.     E(cur_syms),
  1035.     E(shift_syms),
  1036.     E(meta_syms),
  1037.     E(ascii_syms),
  1038.     E(lock_syms)   
  1039. };
  1040.  
  1041. #undef E
  1042.  
  1043. struct syn
  1044. synonyms[] = {
  1045.     { "Control_h",        "BackSpace" },
  1046.     { "Control_i",        "Tab" },
  1047.     { "Control_j",        "Linefeed" },
  1048.     { "Meta_Control_h",    "Meta_BackSpace" },
  1049.     { "Meta_Control_i",    "Meta_Tab" },
  1050.     { "Meta_Control_j",    "Meta_Linefeed" },
  1051.     { "Home",        "Find" },
  1052. /* Unfortunately Delete already denotes ASCII 0177 */
  1053. /*    { "Delete",        "Remove" }, */
  1054.     { "End",        "Select" },
  1055.     { "PageUp",        "Prior" },
  1056.     { "PageDown",        "Next" },
  1057.     { "multiplication",    "multiply" },
  1058.     { "pound",        "sterling" },
  1059.     { "pilcrow",        "paragraph" },
  1060.     { "Oslash",        "Ooblique" },
  1061.     { "Shift_L",        "ShiftL" },
  1062.     { "Shift_R",        "ShiftR" },
  1063.     { "Control_L",        "CtrlL" },
  1064.     { "Control_R",        "CtrlR" },
  1065.     { "AltL",        "Alt" },
  1066.     { "AltR",        "AltGr" },
  1067.     { "Alt_L",        "Alt" },
  1068.     { "Alt_R",        "AltGr" },
  1069.     { "AltGr_L",        "Alt" },
  1070.     { "AltGr_R",        "AltGr" },
  1071.     { "AltLLock",        "Alt_Lock" },
  1072.     { "AltRLock",        "AltGr_Lock" },
  1073.     { "KeyboardSignal",    "Spawn_Console" },
  1074. /* the names of the Greek letters are spelled differently
  1075.    in the iso-8859-7 and the Unicode standards */
  1076.     { "lambda",             "lamda" },
  1077.     { "Lambda",             "Lamda" },
  1078.     { "xi",                 "ksi" },
  1079.     { "Xi",                 "Ksi" },
  1080.     { "chi",                "khi" },
  1081.     { "Chi",                "Khi" },
  1082. /* diacriticals */
  1083.     { "tilde",        "asciitilde" },
  1084.     { "circumflex",        "asciicircum" },
  1085. };
  1086.  
  1087. const int syms_size = sizeof(syms) / sizeof(syms_entry);
  1088. const int syn_size = sizeof(synonyms) / sizeof(synonyms[0]);
  1089.  
  1090. struct cs {
  1091.     char *charset;
  1092.     char **charnames;
  1093.     int start;
  1094. } charsets[] = {
  1095.     { "iso-8859-1", 0, 0 },
  1096.     { "mazovia", mazovia_syms, 128 },
  1097.     { "iso-8859-2", latin2_syms, 160 },
  1098.     { "iso-8859-3", latin3_syms, 160 },
  1099.     { "iso-8859-4", latin4_syms, 160 },
  1100.     { "iso-8859-5", iso_8859_5_syms, 160 },
  1101.     { "iso-8859-7", iso_8859_7_syms, 160 },
  1102.     { "iso-8859-8", iso_8859_8_syms, 160 }
  1103. };
  1104.  
  1105. void
  1106. set_charset(char *charset) {
  1107.     char **p;
  1108.     int i;
  1109.  
  1110.     for (i = 0; i < sizeof(charsets)/sizeof(charsets[0]); i++) {
  1111.         if (!strcmp(charsets[i].charset, charset)) {
  1112.         p = charsets[i].charnames;
  1113.         if (p)
  1114.           for (i = charsets[i].start; i < 256; i++,p++) {
  1115.             if(*p && **p)
  1116.               syms[0].table[i] = *p;
  1117.         }
  1118.         return;
  1119.         }
  1120.     }
  1121.     if (!strcmp(charset, "unicode"))
  1122.       fprintf (stderr, "unknown charset %s - ignoring charset request\n",
  1123.            charset);
  1124. }
  1125.  
  1126.